package com.tinyengine.it.tool;

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import lombok.extern.slf4j.Slf4j;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Map;

/**
 * 模板值处理器
 *
 * @author Ping.Liu
 * @date 2025/04/14 15:53
 */
@Slf4j
public class TemplateVueProcessor {

    /**
     * cfg
     */
    private static final Configuration cfg;

    static {
        cfg = new Configuration();
        // 设置模板加载路径（相对于resources根目录）
        cfg.setClassForTemplateLoading(TemplateVueProcessor.class, "/template/vue");
        cfg.setDefaultEncoding("UTF-8");
    }

    /**
     * 流程模板
     *
     * @param templateName 模板名称
     * @param data         数据
     * @param outFile      出文件
     * @throws IOException       无效
     * @throws TemplateException 无效
     */
    public static void processTemplate(String templateName, Map<String, Object> data, File outFile)
            throws IOException, TemplateException {
        FileWriter outputPath = new FileWriter(outFile);
        Template template = cfg.getTemplate(templateName);
        //输出到文件
        template.process(data, outputPath);
        outputPath.close();
        log.info("生成Vue项目文件完成,目标名称:{},输出路径:{}", templateName, outFile.getAbsolutePath());
    }
}